package main

import (
	"fmt"
	"html/template"
	"net/http"
)

func f1(w http.ResponseWriter, r *http.Request) {
	//定义一个函数kua
	//要么只有一个返回值，如果有两个，第二个返回值必须是error类型
	k := func(name string) (string, error) {
		return name + "真帅！", nil
	}
	//1.定义模板
	//2.解析模板
	//t,err:=templates.New("f.tmpl").ParseFiles("./f.tmpl")
	t := template.New("f.tmpl") //创建一个名字是f的模板对象,名字要和模板文件名称对应上

	//告诉模板引擎，我现在自定义了一个函数k
	t.Funcs(template.FuncMap{
		"kua": k,
	})

	_, err1 := t.ParseFiles("./f.tmpl", "./xxx.tmpl") //可以同时解析多个文件，但是要求这些文件都在
	if err1 != nil {
		fmt.Printf("Parse templates failed,err1:%v \n", err1)
		return
	}
	//3.渲染模板
	name := "小王子"
	t.Execute(w, name)
}

func demo1(w http.ResponseWriter, r *http.Request) {
	//1.定义文件
	//2.解析文件
	t, err2 := template.ParseFiles("./t.tmpl", "./ul.tmpl")
	if err2 != nil {
		fmt.Printf("Parse templates failed,err2:%v \n", err2)
		return
	}
	name := "qaz"
	//3.渲染模板
	t.Execute(w, name)
}

func main() {
	http.HandleFunc("/", f1)
	http.HandleFunc("/tmpDemo", demo1)
	err := http.ListenAndServe(":9090", nil)
	if err != nil {
		fmt.Println("HTTP server start failed.err:%v", err)
		return
	}
}
